package com.sicheng.蓝桥.省赛.第九届;

import java.io.BufferedInputStream;
import java.util.Arrays;
import java.util.Comparator;
import java.util.Scanner;

/**
 * @author zsc
 * @version 1.0
 * @date 2022/1/26 14:55
 */
public class 递增三元组 {
    /**
     * 给定三个整数数组
     * A = [A1, A2, ... AN],
     * B = [B1, B2, ... BN],
     * C = [C1, C2, ... CN]，
     * 请你统计有多少个三元组 (i, j, k) 满足：
     * <p>
     * 1 <= i, j, k <= N
     * Ai < Bj < Ck
     * 【输入格式】
     * 第一行包含一个整数 N。
     * 第二行包含 N 个整数 A1, A2, ... AN。
     * 第三行包含 N 个整数 B1, B2, ... BN。
     * 第四行包含 N 个整数 C1, C2, ... CN。
     * <p>
     * 对于 30% 的数据，1 <= N <= 100
     * 对于 60% 的数据，1 <= N <= 1000
     * 对于 100% 的数据，1 <= N <= 1000000 <= Ai, Bi, Ci <= 100000
     * <p>
     * 【输出格式】
     * 一个整数表示答案
     * <p>
     * 【输入样例】
     * 3
     * 1 1 1
     * 2 2 2
     * 3 3 3
     * <p>
     * 【输出样例】
     * 27
     */

    public static void main(String[] args) {
        long start = System.nanoTime();
        Scanner scanner = new Scanner(new BufferedInputStream(System.in));
        int n = scanner.nextInt();

        int[] a = new int[n];
        int[] b = new int[n];
        Integer[] c = new Integer[n];
        for (int i = 0; i < n; i++) {
            a[i] = scanner.nextInt();
        }
        for (int i = 0; i < n; i++) {
            b[i] = scanner.nextInt();
        }
        for (int i = 0; i < n; i++) {
            c[i] = scanner.nextInt();
        }

        Arrays.sort(a);
        Arrays.sort(c, Comparator.reverseOrder());

        int[] resa = new int[n];
        int[] resc = new int[n];
        for (int i = 0; i < n; i++) {//遍历b

            for (int j = 0; j < n; j++) {//遍历a
                if (b[i] > a[j])
                    resa[i]++;
                else
                    break;
            }

            for (int k = 0; k < n; k++) {//遍历c
                if (b[i] < c[k])
                    resc[i]++;
                else
                    break;
            }
        }

        long res = 0;
        for (int i = 0; i < n; i++) {
            res += (long) resa[i] * resc[i];
        }

        System.out.println(res);
        long end = System.nanoTime();
        System.out.println("###########");
        System.out.println((end-start));
    }

}
